package io.adrainty.bolee.insurance.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import io.adrainty.bolee.insurance.models.aggregate.EarningResultDTO;
import io.adrainty.bolee.insurance.models.entity.InsuranceEntity;
import io.adrainty.bolee.insurance.models.request.DoInsuranceDTO;

import java.util.List;

/**
 * <p>IInsuranceService</p>
 *
 * @author AdRainty
 * @version V1.0.0
 * @description IInsuranceService
 * @since 2025/8/12 10:44:30
 */
public interface IInsuranceService {

    /**
     * 获取保险分页
     * @param pageNum 页码
     * @param pageSize 页大小
     * @param insuranceEntity 保险实体
     * @return 保险分页
     */
    IPage<InsuranceEntity> getInsurancePage(Integer pageNum, Integer pageSize, InsuranceEntity insuranceEntity);

    /**
     * 创建保险
     * @param insuranceEntity 保险实体
     * @return 保险实体
     */
    InsuranceEntity createInsurance(InsuranceEntity insuranceEntity);

    /**
     * 修改保险
     * @param insuranceEntity 保险实体
     * @return 修改成功
     */
    Boolean updateInsurance(InsuranceEntity insuranceEntity);

    /**
     * 获取保险详情
     * @param insuranceId 保险ID
     * @return 保险详情
     */
    InsuranceEntity findInsuranceDetails(Long insuranceId);

    /**
     * 获取保险列表
     * @param insuranceEntity 保险实体
     * @return 保险列表
     */
    List<InsuranceEntity> listInsurance(InsuranceEntity insuranceEntity);

    /**
     * 试算保费
     * @param doInsuranceDTO 试算参数
     * @return 保费
     */
    String calculatePremium(DoInsuranceDTO doInsuranceDTO);

    /**
     * 试算收益
     * @param doInsuranceDTO 试算参数
     * @return 收益
     */
    EarningResultDTO calculateEarnings(DoInsuranceDTO doInsuranceDTO);

}
